Ext.namespace('Ext.ux');
Ext.namespace('Ext.ux.Vector');
Ext.namespace('Ext.ux.Vector.VectorManager');
Ext.namespace('Ext.ux.Vector.SVG');
Ext.namespace('Ext.ux.Vector.VML');
Ext.namespace('Ext.ux.Vector.Graph');

Ext.ux.Vector.PathToBaseScripts = '';
/**
 * @class YAHOO.ext.Vector.VectorManager
 * This class is a singleton that manages vector objects 
 */
Ext.ux.Vector.VectorManager = function(){
	var vectorType = 'vml';  //vml or svg
	return{
	/**
	 * Sets up required vector graphics options per browser
	 */
		setupVector: function(){
			var baseHtml = document.getElementsByTagName('html')[0];
			var baseHead = document.getElementsByTagName('head')[0];
			var htmlNS = '';
			var htmlNSText = '';
			var vectorBase = '';
			if(Ext.isIE||Ext.isIE7){
				vectorBase = 'BaseVml.js';
				htmlNS = 'xmlns:v';
				htmlNSText = 'urn:schemas-microsoft-com:vml';
				var cssStr = 'v\\:* { behavior: url(#default#VML); }';
				var style = document.createElement("style");
				style.setAttribute("type", "text/css");
				style.styleSheet.cssText = cssStr;
				baseHead.appendChild(style);
				vectorType = 'vml';
			}else{
				vectorBase = 'BaseSVG.js';
				htmlNS = 'xmlns';
				htmlnstext = 'http://www.w3.org/1999/xhtml';
				vectorType = 'svg';
				var meta=document.createElement("meta");
			    meta.setAttribute("http-equiv","Content-Type");
			    meta.setAttribute("content","application/xhtml+xml");
			    baseHead.appendChild(meta);
			}
			baseHtml.setAttribute(htmlNS,htmlNSText);	
//			var base = document.createElement('script');
//			base.setAttribute('src', Ext.ux.Vector.PathToBaseScripts + vectorBase);
//			baseHead.appendChild(document.createElement('script'))
		},
		getLine: function(config){
			if(vectorType == 'vml'){
				return new Ext.ux.Vector.VML.Line(config);
			}else{
				return new Ext.ux.Vector.SVG.Line(config);
			}
		},
		getPoly: function(config){
			if(vectorType == 'vml'){
				return new Ext.ux.Vector.VML.Polyline(config);
			}else{
				return new Ext.ux.Vector.SVG.Polyline(config);
			}
		},
		getBox: function(config){
			if(vectorType == 'vml'){
				return new Ext.ux.Vector.VML.Box(config);
			}else{
				return new Ext.ux.Vector.SVG.Box(config);	
			}
		},
		getGroup: function(config){
			if(vectorType == 'vml'){
					return new Ext.ux.Vector.VML.Group(config);
			}else{
				return new Ext.ux.Vector.SVG.Group(config);
			}
		},
		getRoundBox: function(config){
			if(vectorType == 'vml'){
				return new Ext.ux.Vector.VML.RoundBox(config);
			}else{
				return new Ext.ux.Vector.SVG.RoundBox(config);
			}
		},
		getImage: function(config){
			if(vectorType == 'vml'){
				return new Ext.ux.Vector.VML.Image(config);
			}else{
				return new Ext.ux.Vector.SVG.Image(config);
			}
		}
	}
}();
Ext.onReady(Ext.ux.Vector.VectorManager.setupVector, Ext.ux.Vector.VectorManager, true);